package com.lapism.searchview; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import android.support.v4.view.animation.LinearOutSlowInInterpolator; import android.view.View; import android.view.ViewAnimationUtils; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; public class SearchAnimator { public static final int ANIMATION_DURATION = 360; @TargetApi(Build.VERSION_CODES.LOLLIPOP) public static void revealInAnimation(final Context mContext, View menuItem, final View animatedView, final int startCy, final int duration) { int[] location = new int[2]; menuItem.getLocationOnScreen(location); int cx = location[0]; int cy = location[1]; if (cx != 0 && cy != 0) { float initialRadius = 0.0f; float finalRadius = Math.max(animatedView.getWidth(), animatedView.getHeight()); Animator anim = ViewAnimationUtils.createCircularReveal(animatedView, cx, cy, initialRadius, finalRadius); anim.setInterpolator(new LinearOutSlowInInterpolator()); anim.setDuration(duration); animatedView.setVisibility(View.VISIBLE); anim.start(); } } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public static void revealOutAnimation(final Context mContext, View menuItem, final View animatedView, final int endCy, final int duration) { int[] location = new int[2]; menuItem.getLocationOnScreen(location); int cx = location[0]; int cy = location[1]; if (cx != 0 && cy != 0) { float initialRadius = animatedView.getWidth(); float finalRadius = 0.0f; Animator anim = ViewAnimationUtils.createCircularReveal(animatedView, cx, cy, initialRadius, finalRadius); anim.setInterpolator(new LinearOutSlowInInterpolator()); anim.setDuration(duration); anim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); animatedView.setVisibility(View.GONE); } }); anim.start(); } } @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) public static void fadeInAnimation(final View view, int duration) { Animation anim = new AlphaAnimation(0.0f, 1.0f); anim.setInterpolator(new LinearOutSlowInInterpolator()); anim.setDuration(duration); view.setAnimation(anim); view.setVisibility(View.VISIBLE); } @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) public static void fadeOutAnimation(final View view, int duration) { Animation anim = new AlphaAnimation(1.0f, 0.0f); anim.setInterpolator(new LinearOutSlowInInterpolator()); anim.setDuration(duration); view.setAnimation(anim); view.setVisibility(View.GONE); } }